package com.lzm.ydpt.mvp.api;


import com.byt.framlib.basemvp.basebean.BaseResponseBean;
import com.byt.framlib.basemvp.basebean.ListPageBean;
import com.byt.framlib.basemvp.boby.FormBodys;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.lzm.ydpt.entity.AddressBook;
import com.lzm.ydpt.entity.PriceRules;
import com.lzm.ydpt.entity.UserInfo;
import com.lzm.ydpt.entity.UserOrderBean;
import com.lzm.ydpt.entity.mall.GoodsOption;
import com.lzm.ydpt.entity.mall.LogisticsDetails;
import com.lzm.ydpt.entity.mall.MallOrderBean;
import com.lzm.ydpt.entity.mall.ProductBean;
import com.lzm.ydpt.entity.mall.ShopGoods;
import com.lzm.ydpt.entity.mall.ShopInfoBean;
import com.lzm.ydpt.entity.payresult.PayBean;
import com.lzm.ydpt.entity.riding.OrderBean;
import com.lzm.ydpt.entity.riding.PerAddress;

import java.util.List;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.POST;

/**
 * 类描述：   网络请求接口定义
 */
public interface APIService {

    /***=======================跑腿==================**/
    // 跑腿
    Observable<BaseResponseBean<List<OrderBean>>> onOrderList(RequestBody formBodys);

    // 获取用户信息
    @POST("courier/getCourierByMemberId")
    Observable<BaseResponseBean<UserInfo>> onUserInfo(@Body FormBodys formBodys);

    // 获取常驻地址
    @POST("courier/getCourierPermanentAddressByMemberId")
    Observable<BaseResponseBean<PerAddress>> onPerAddress(@Body FormBodys formBodys);

    // 修改常驻地址
    @POST("courier/saveOrUpdateCourierPermanentAddressByMemberId")
    Observable<BaseResponseBean<Integer>> onSaveAddress(@Body FormBodys formBodys);

    // 修改紧急联系人
    @POST("courier/updateCourierEmergencyByMemberId")
    Observable<BaseResponseBean<Integer>> onContactUser(@Body FormBodys formBodys);

    // 修改骑手接单状态
    @POST("courier/updateCourierReceiveStatusByMemberId")
    Observable<BaseResponseBean<Integer>> onEdtState(@Body FormBodys formBodys);

    // 计价规则
    @POST("valuation/config/getValuationConfig")
    Observable<BaseResponseBean<PriceRules>> onPriceRules(@Body FormBodys formBodys);

    // 用户地址薄
    @POST("member/address/getMemberAddressList")
    Observable<BaseResponseBean<ListPageBean<AddressBook>>> onAddressBookList(@Body FormBodys formBodys);

    //删除用户地址簿地址
    @POST("member/address/deleteMemberAddress")
    Observable<BaseResponseBean<Object>> onDeleteAddress(@Body FormBodys formBodys);

    //添加编辑用户地址簿地址
    @POST("member/address/addMemberAddressList")
    Observable<BaseResponseBean<Object>> onAddAddressBook(@Body FormBodys formBodys);

    // 添加编辑用户地址簿地址

    @POST("member/address/updateMemberAddressList")
    Observable<BaseResponseBean<Object>> onFillAddress(@Body FormBodys formBodys);
    // 获得用户历史地址列表

    @POST("member/address/getMemberHistoryAddressList")
    Observable<BaseResponseBean<ListPageBean<AddressBook>>> onHistoryAddressList(@Body FormBodys formBodys);

    // 获得用户订单列表
    @POST("order/getOrderList")
    Observable<BaseResponseBean<ListPageBean<UserOrderBean>>> onUserOrderList(@Body FormBodys formBodys);


    /***=========================商城=============================*********/


    // 商城
    @POST("member/getById")
    Observable<BaseResponseBean<UserInfo>> onUserInfoData(@Body RequestBody requestBody);

    // 获得用户商城商户详情
    @POST("")
    Observable<BaseResponseBean<ShopInfoBean>> onShopInfoDetails(@Body FormBodys formBodys);

    // 获得用户商城商户列表
    @POST("")
    Observable<BaseResponseBean<ListPageBean<ShopInfoBean>>> onFetchShopList(@Body FormBodys formBodys);

    // 获得用户商城商品列表
    @POST("")
    Observable<BaseResponseBean<ListPageBean<ProductBean>>> onMallProductList(@Body FormBodys formBodys);

    // 获得用户商城订单列表
    @POST("")
    Observable<BaseResponseBean<ListPageBean<MallOrderBean>>> onMallOrderList(@Body FormBodys formBodys);

    // 获得用户商城订单详情
    @POST("")
    Observable<BaseResponseBean<MallOrderBean>> onMallOrderDetails(@Body FormBodys formBodys);

    // 删除用户商城订单列表
    @POST("")
    Observable<BaseResponseBean<Object>> onDeteleMallOrder(@Body FormBodys formBodys);

    // 确认用户商城订单
    @POST("")
    Observable<BaseResponseBean<Object>> onReceiptMallOrder(@Body FormBodys formBodys);

    // 取消用户商城订单
    @POST("")
    Observable<BaseResponseBean<Object>> onCancelMallOrder(@Body FormBodys formBodys);

    // 获取用户商品详情
    @POST("")
    Observable<BaseResponseBean<ProductBean>> onProductDetails(@Body FormBodys formBodys);

    // 收藏用户商品
    @POST("")
    Observable<BaseResponseBean<ProductBean>> onCollectionProduct(@Body FormBodys formBodys);

    // 添加购物车
    @POST("")
    Observable<BaseResponseBean<JsonArray>> addCartProduct(@Body FormBodys formBodys);

    // 切换商品SKU
    @POST("")
    Observable<BaseResponseBean<GoodsOption>> onProductOption(@Body FormBodys formBodys);

    // 关注
    Observable<BaseResponseBean<JsonObject>> onMallFollow();

    // 提交订单
    @POST("")
    Observable<BaseResponseBean<PayBean>> onPayMallOrder(@Body FormBodys formBodys);

    // 获取订单物流信息
    @POST("")
    Observable<BaseResponseBean<LogisticsDetails>> onProductLogistics(@Body FormBodys formBodys);
    // 提交地址
    @POST("")
    Observable<BaseResponseBean<JsonObject>> onMallAddEdtAddress();
    // 订单消息
    @POST("")
    Observable<BaseResponseBean<JsonObject>> onOrderMsg();

    // 获取商城购物车列表
    @POST("")
    Observable<BaseResponseBean<ListPageBean<ShopGoods>>> onProductCartList(@Body FormBodys formBodys);

    // 删除商城购物车列表
    @POST("")
    Observable<BaseResponseBean<Object>> onDeteleProductCart(@Body FormBodys formBodys);

    // 修改商城购物车商品数量
    @POST("")
    Observable<BaseResponseBean<Object>> onShoppingCart(@Body FormBodys formBodys);

    // 获取商城购物车猜你喜欢列表
    @POST("")
    Observable<BaseResponseBean<ListPageBean<ProductBean>>> onShopGuessLike(@Body FormBodys formBodys);

    @POST("member/passwordLogin")
    Observable<BaseResponseBean<List<UserInfo>>> onLogin(@Body RequestBody requestBody);

    @POST("")
    Observable<BaseResponseBean<List<ProductBean>>> onProductLove(@Body RequestBody requestBody);
    @POST("")
    Observable<BaseResponseBean<List<ProductBean>>> onProductHistory(@Body RequestBody requestBody);
    // 优惠活动
    Observable<BaseResponseBean<JsonObject>> onDiscountAction();
    // 地址信息
    Observable<BaseResponseBean<JsonObject>> onSelectLocation();
    // 我的总包李
    Observable<BaseResponseBean<JsonObject>> onMyVCurrency();
    // 售后详情
    Observable<BaseResponseBean<JsonObject>> onRefundDetail();
}